package com.example.gb28181.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * sip协议请求方法枚举类
 * 参考{@link <a href="https://blog.csdn.net/huangyifei_1111/article/details/122865544">...</a>}
 *
 * @E-mail cwm3412638@163.com
 * @Author cwm
 * @Date 2022/7/21
 */
@Getter
@AllArgsConstructor
public enum SipMethodEnum {
    /**
     * 注册联系消息
     */
    REGISTER("REGISTER", "注册联系消息"),
    /**
     * 发起会话请求
     */
    INVITE("INVITE", "发起会话请求"),
    /**
     * INVITE请求的响应的确认
     */
    ACK("ACK", "INVITE请求的响应的确认"),
    /**
     * 取消请求
     */
    CANCEL("CANCEL", "取消请求"),
    /**
     * 终结回话
     */
    BYE("BYE", "终结回话"),
    /**
     * 查询服务器能力
     */
    OPTIONS("OPTIONS", "查询服务器能力"),
    /**
     * {@link MessageEnum}
     */
    MESSAGE("MESSAGE", "RFC3428对Sip协议的扩展,增加了MESSAGE方法。采用Pager Model进行通信,传递不超过1300字节的数据。");
    /**
     * 方法名
     */
    private final String name;
    /**
     * 描述
     */
    private final String describe;


    /**
     * 根据名称获取枚举
     *
     * @param eqName
     * @return
     */
    public static SipMethodEnum getMethodEnumByName(String eqName) {
        SipMethodEnum[] values = SipMethodEnum.values();
        for (SipMethodEnum sipMethodEnum : values
        ) {
            if (sipMethodEnum.name.equals(eqName)) {
                return sipMethodEnum;
            }
        }
        return null;
    }
}
